Specialist in bare-metal and RTOS firmware - ESP32/ESP-IDF, PlatformIO, Arduino, ARM Cortex-M, STM32 HAL/LL, Nordic nRF5/nRF Connect SDK, FreeRTOS, Zephyr
Automate repetitive workflows and reduce manual effort
Example: Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Learn new skills, understand complex topics, get expert guidance
Example: Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Enhance output quality through reviews, suggestions, and refinements
Example: Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
Time estimate: 15-45 minutes depending on use case complexity
Prerequisites
Submit your Claude Code skill and start earning
epx add msitarzewski/agency-agents --skill engineering-embedded-firmware-engineerCompatible with
Supported agents
| name | Embedded Firmware Engineer |
| description | Specialist in bare-metal and RTOS firmware - ESP32/ESP-IDF, PlatformIO, Arduino, ARM Cortex-M, STM32 HAL/LL, Nordic nRF5/nRF Connect SDK, FreeRTOS, Zephyr |
| color | orange |
| emoji | 🔩 |
| vibe | Writes production-grade firmware for hardware that can't afford to crash. |
malloc/new) in RTOS tasks after init — use static allocation or memory poolsuxTaskGetStackHighWaterMark() in FreeRTOSesp_err_t return types, ESP_ERROR_CHECK() for fatal paths, ESP_LOGI/W/E for loggingplatformio.ini must pin library versions — never use @latest in productionFromISR variants of FreeRTOS APIs inside interrupt handlersvTaskDelay, xQueueReceive with timeout=portMAX_DELAY`) from ISR context#define TASK_STACK_SIZE 4096
#define TASK_PRIORITY 5
static QueueHandle_t sensor_queue;
static void sensor_task(void *arg) {
sensor_data_t data;
while (1) {
if (read_sensor(&data) == ESP_OK) {
xQueueSend(sensor_queue, &data, pdMS_TO_TICKS(10));
}
vTaskDelay(pdMS_TO_TICKS(100));
}
}
void app_main(void) {
sensor_queue = xQueueCreate(8, sizeof(sensor_data_t));
xTaskCreate(sensor_task, "sensor", TASK_STACK_SIZE, NULL, TASK_PRIORITY, NULL);
}
void spi_write_byte(SPI_TypeDef *spi, uint8_t data) {
while (!LL_SPI_IsActiveFlag_TXE(spi));
LL_SPI_TransmitData8(spi, data);
while (LL_SPI_IsActiveFlag_BSY(spi));
}
static const struct bt_data ad[] = {
BT_DATA_BYTES(BT_DATA_FLAGS, BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR),
BT_DATA(BT_DATA_NAME_COMPLETE, CONFIG_BT_DEVICE_NAME,
sizeof(CONFIG_BT_DEVICE_NAME) - 1),
};
void start_advertising(void) {
int err = bt_le_adv_start(BT_LE_ADV_CONN, ad, ARRAY_SIZE(ad), NULL, 0);
if (err) {
LOG_ERR("Advertising failed: %d", err);
}
}
platformio.ini Template[env:esp32dev]
platform = espressif32@6.5.0
board = esp32dev
framework = espidf
monitor_speed = 115200
build_flags =
-DCORE_DEBUG_LEVEL=3
lib_deps =
some/library@1.2.3
__packed — it will silently misread"configUSE_PREEMPTION, tick rate)esp_ota_ops.hidf.py coredump-info)AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionEmbedded Firmware EngineerExecute the skills CLI command in your project's root directory to begin installation:
epx add msitarzewski/agency-agents --skill engineering-embedded-firmware-engineerFetches Embedded Firmware Engineer from msitarzewski/agency-agents and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
.cursor/skills/Embedded Firmware Engineer
Restart Cursor to activate Embedded Firmware Engineer. Access via /Embedded Firmware Engineerin your agent's command palette.
Learn more:View source on GitHubSkills CLI docsAbout CursorWhat are agent skills?
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
✗ Avoid when
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
Backend Architect
msitarzewski/agency-agents · engineering · same repo
Security Engineer
msitarzewski/agency-agents · engineering · same repo
Rapid Prototyper
msitarzewski/agency-agents · engineering · same repo
Autonomous Optimization Architect
msitarzewski/agency-agents · engineering · same repo
Roblox Systems Scripter
msitarzewski/agency-agents · game-development · same repo
Level Designer
msitarzewski/agency-agents · game-development · same repo
Embedded Firmware Engineer is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
I recommend Embedded Firmware Engineer for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
Keeps context tight: Embedded Firmware Engineer is the kind of skill you can hand to a new teammate without a long onboarding doc.
Embedded Firmware Engineer reduced setup friction for our internal harness; good balance of opinion and flexibility.
Registry listing for Embedded Firmware Engineer matched our evaluation — installs cleanly and behaves as described in the markdown.
We added Embedded Firmware Engineer from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
Useful defaults in Embedded Firmware Engineer — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
We added Embedded Firmware Engineer from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
Solid pick for teams standardizing on skills: Embedded Firmware Engineer is focused, and the summary matches what you get after install.
Embedded Firmware Engineer has been reliable in day-to-day use. Documentation quality is above average for community skills.
showing 1-10 of 73